home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #42 (1995-01)(PackMAN)(DE)[WB].zip / Purity #42 (1995-01)(PackMAN)(DE)[WB].adf / Includes3v1 / Includes3v1.lha / Libraries / AmigaGuide.i next >
Text File  |  1994-12-04  |  9KB  |  265 lines

  1.  
  2. {$I "Include:Exec/Types.i"}
  3. {$I "Include:Exec/Lists.i"}
  4. {$I "Include:Exec/Nodes.i"}
  5. {$I "Include:exec/Semaphores.i"}
  6. {$I "Include:Intuition/Intuition.i"}
  7. {$I "Include:Intuition/Screens.i"}
  8. {$I "Include:Intuition/ClassUsr.i"}
  9. {$I "Include:DOS/DOS.i"}
  10. {$I "Include:Utility/TagItem.i"}
  11.  
  12.  
  13. Var AmigaGuideBase : Address;
  14.  
  15. const
  16.  APSH_TOOL_ID           = 11000;
  17.  StartupMsgID           = (APSH_TOOL_ID+1) ;      { Startup message }
  18.  LoginToolID            = (APSH_TOOL_ID+2) ;      { Login a tool SIPC port }
  19.  LogoutToolID           = (APSH_TOOL_ID+3) ;      { Logout a tool SIPC port }
  20.  ShutdownMsgID          = (APSH_TOOL_ID+4) ;      { Shutdown message }
  21.  ActivateToolID         = (APSH_TOOL_ID+5) ;      { Activate tool }
  22.  DeactivateToolID       = (APSH_TOOL_ID+6) ;      { Deactivate tool }
  23.  ActiveToolID           = (APSH_TOOL_ID+7) ;      { Tool Active }
  24.  InactiveToolID         = (APSH_TOOL_ID+8) ;      { Tool Inactive }
  25.  ToolStatusID           = (APSH_TOOL_ID+9) ;      { Status message }
  26.  ToolCmdID              = (APSH_TOOL_ID+10);      { Tool command message }
  27.  ToolCmdReplyID         = (APSH_TOOL_ID+11);      { Reply to tool command }
  28.  ShutdownToolID         = (APSH_TOOL_ID+12);      { Shutdown tool }
  29.  
  30. { Attributes accepted by GetAmigaGuideAttr() }
  31.  AGA_Dummy              = (TAG_USER)   ;
  32.  AGA_Path               = (AGA_Dummy+1);
  33.  AGA_XRefList           = (AGA_Dummy+2);
  34.  AGA_Activate           = (AGA_Dummy+3);
  35.  AGA_Context            = (AGA_Dummy+4);
  36.  
  37.  AGA_HelpGroup          = (AGA_Dummy+5);
  38.     { (ULONG) Unique identifier }
  39.  
  40.  AGA_Reserved1          = (AGA_Dummy+6);
  41.  AGA_Reserved2          = (AGA_Dummy+7);
  42.  AGA_Reserved3          = (AGA_Dummy+8);
  43.  
  44.  AGA_ARexxPort          = (AGA_Dummy+9);
  45.     { (struct MsgPort *) Pointer to the ARexx message port (V40) }
  46.  
  47.  AGA_ARexxPortName      = (AGA_Dummy+10);
  48.    { (STRPTR) Used to specify the ARexx port name (V40) (not copied) }
  49.  
  50. Type
  51.     AMIGAGUIDECONTEXT = Address;
  52.  
  53.  AmigaGuideMsg = Record
  54.     agm_Msg     : Message;                      { Embedded Exec message structure }
  55.     agm_Type    : Integer;                      { Type of message }
  56.     agm_Data    : APTR;                         { Pointer to message data }
  57.     agm_DSize,                                  { Size of message data }
  58.     agm_DType,                                  { Type of message data }
  59.     agm_Pri_Ret,                                { Primary return value }
  60.     agm_Sec_Ret : Integer;                      { Secondary return value }
  61.     agm_System1,
  62.     agm_System2 : APTR;
  63.  end;
  64.  AmigaGuideMsgPtr = ^AmigaGuideMsg;
  65.  
  66. { Allocation description structure }
  67.   NewAmigaGuide = Record
  68.     nag_Lock  : BPTR;                           { Lock on the document directory }
  69.     nag_Name  : String;                         { Name of document file }
  70.     nag_Screen : ScreenPtr;                     { Screen to place windows within }
  71.     nag_PubScreen,                              { Public screen name to open on }
  72.     nag_HostPort,                               { Application's ARexx port name }
  73.     nag_ClientPort,                             { Name to assign to the clients ARexx port }
  74.     nag_BaseName  : String;                     { Base name of the application }
  75.     nag_Flags  : Integer;                       { Flags }
  76.     nag_Context: Address;                       { NULL terminated context table }
  77.     nag_Node   : String;                        { Node to align on first (defaults to Main) }
  78.     nag_Line   : Integer;                       { Line to align on }
  79.     nag_Extens : Address;                       { Tag array extension }
  80.     nag_Client : Address;                       { Private! MUST be NULL }
  81.   END;
  82.   NewAmigaGuidePtr = ^NewAmigaGuide;
  83.  
  84. CONST
  85. { public Client flags }
  86.     HTF_LOAD_INDEX = 0;                 { Force load the index at init time }
  87.     HTF_LOAD_ALL   = 2;                 { Force load the entire database at init }
  88.     HTF_CACHE_NODE = 3;                 { Cache each node as visited }
  89.     HTF_CACHE_DB   = 8;                 { Keep the buffers around UNTIL expunge }
  90.     HTF_UNIQUE     = 32768;             { Unique ARexx port name }
  91.     HTF_NOACTIVATE = 65536;             { Don't activate window }
  92.  
  93.     HTFC_SYSGADS   = $80000000;
  94.  
  95. { Callback function ID's }
  96.     HTH_OPEN       = 0;
  97.     HTH_CLOSE      = 1;
  98.  
  99.     HTERR_NOT_ENOUGH_MEMORY       =  100;
  100.     HTERR_CANT_OPEN_DATABASE      =  101;
  101.     HTERR_CANT_FIND_NODE          =  102;
  102.     HTERR_CANT_OPEN_NODE          =  103;
  103.     HTERR_CANT_OPEN_WINDOW        =  104;
  104.     HTERR_INVALID_COMMAND         =  105;
  105.     HTERR_CANT_COMPLETE           =  106;
  106.     HTERR_PORT_CLOSED             =  107;
  107.     HTERR_CANT_CREATE_PORT        =  108;
  108.     HTERR_KEYWORD_NOT_FOUND       =  113;
  109.  
  110. Type
  111. { Cross reference node }
  112.   XRef = Record
  113.     xr_Node   : Node;             { Embedded node }
  114.     xr_Pad    : WORD;             { Padding }
  115.     xr_DF     : Address;          { Document defined in }
  116.     xr_File,                      { Name of document file }
  117.     xr_Name   : String;           { Name of item }
  118.     xr_Line   : Integer;          { Line defined at }
  119.    END;
  120.    XRefPtr = ^XRef;
  121.  
  122. CONST
  123. { Types of cross reference nodes }
  124.     XR_GENERIC     = 0;
  125.     XR_FUNCTION    = 1;
  126.     XR_COMMAND     = 2;
  127.     XR_INCLUDE     = 3;
  128.     XR_MACRO       = 4;
  129.     XR_STRUCT      = 5;
  130.     XR_FIELD       = 6;
  131.     XR_TYPEDEF     = 7;
  132.     XR_DEFINE      = 8;
  133.  
  134. Type
  135. { Callback handle }
  136.    AmigaGuideHost = Record
  137.     agh_Dispatcher  : Hook;         { Dispatcher }
  138.     agh_Reserved,                 { Must be 0 }
  139.     agh_Flags,
  140.     agh_UseCnt      : Integer;                   { Number of open nodes }
  141.     agh_SystemData,                        { Reserved for system use }
  142.     agh_UserData    : APTR;                  { Anything you want... }
  143.    END;
  144.    AmigaGuideHostPtr = ^AmigaGuideHost;
  145.  
  146. CONST
  147. { Methods }
  148.     HM_FindNode    = 1 ;
  149.     HM_OpenNode    = 2 ;
  150.     HM_CloseNode   = 3 ;
  151.     HM_Expunge     = 10;              { Expunge DataBase }
  152.  
  153. Type
  154. { HM_FindNode }
  155.    opFindHost = Record
  156.     MethodID  : Integer;
  157.     ofh_Attrs : Address;           {  R: Additional attributes }
  158.     ofh_Node,                    {  R: Name of node }
  159.     ofh_TOC,                     {  W: Table of Contents }
  160.     ofh_Title,                   {  W: Title to give to the node }
  161.     ofh_Next,                    {  W: Next node to browse to }
  162.     ofh_Prev  : String;                    {  W: Previous node to browse to }
  163.    END;
  164.    opFindHostPtr = ^opFindHost;
  165.  
  166. { HM_OpenNode, HM_CloseNode }
  167.    opNodeIO = Record
  168.     MethodID  : Integer;
  169.     onm_Attrs : Address;          {  R: Additional attributes }
  170.     onm_Node,                    {  R: Node name AND arguments }
  171.     onm_FileName,                {  W: File name buffer }
  172.     onm_DocBuffer : String;               {  W: Node buffer }
  173.     onm_BuffLen : Integer;                  {  W: Size of buffer }
  174.     onm_Flags : Integer;                    { RW: Control flags }
  175.    END;
  176.    opNodeIOPtr = ^opNodeIO;
  177.  
  178. CONST
  179. { onm_Flags }
  180.     HTNF_KEEP      = 0; { Don't flush this node UNTIL database is
  181.                                  * closed. }
  182.     HTNF_Reserved1 = 2 ; { Reserved for system use }
  183.     HTNF_Reserved2 = 4 ; { Reserved for system use }
  184.     HTNF_ASCII     = 8 ; { Node is straight ASCII }
  185.     HTNF_Reserved3 = 16; { Reserved for system use }
  186.     HTNF_CLEAN     = 32; { Remove the node from the database }
  187.     HTNF_DONE      = 64; { Done with node }
  188.  
  189. { onm_Attrs }
  190.     HTNA_Dummy     = TAG_USER;
  191.     HTNA_Screen    = (TAG_USER + 1);  { Screen that window resides in }
  192.     HTNA_Pens      = (TAG_USER + 2);  { Pen array (from DrawInfo) }
  193.     HTNA_Rectangle = (TAG_USER + 3);  { Window box }
  194.  
  195.     HTNA_HelpGroup = (HTNA_Dummy+5);  { (ULONG) unique identifier }
  196.  
  197.  
  198. Type
  199. { HM_Expunge }
  200.   opExpungeNode = Record
  201.     MethodID  : Integer;
  202.     oen_Attrs : Address;          {  R: Additional attributes }
  203.   END;
  204.   opExpungeNodePtr = ^opExpungeNode;
  205.  
  206. { --- functions in V40 or higher (Release 3.1) --- }
  207.  
  208. FUNCTION LockAmigaGuideBase(handle : Address ) : Integer;
  209.     External;
  210.  
  211. PROCEDURE UnlockAmigaGuideBase(key : Integer);
  212.     External;
  213.  
  214. FUNCTION OpenAmigaGuideA(nag : NewAmigaGuidePtr; TagList : Address) : AmigaGuideContext;
  215.     External;
  216.  
  217. FUNCTION OpenAmigaGuideAsyncA(nag : NewAmigaGuidePtr; TagList : Address) : AmigaGuideContext;
  218.     External;
  219.  
  220. PROCEDURE CloseAmigaGuide(cl : AmigaGuideContext);
  221.     External;
  222.  
  223. FUNCTION AmigaGuideSignal(cl : AmigaGuideContext) : Integer;
  224.     External;
  225.  
  226. FUNCTION GetAmigaGuideMsg(cl : AmigaGuideContext) : AmigaGuideMsgPtr;
  227.     External;
  228.  
  229. PROCEDURE ReplyAmigaGuideMsg(amsg : AmigaGuideMsgPtr);
  230.     External;
  231.  
  232. FUNCTION SetAmigaGuideContextA(cl : AmigaGuideContext; ID : Integer; TagList : Address;) : Integer;
  233.     External;
  234.  
  235. FUNCTION SendAmigaGuideContextA(cl, TagList : Address) : Integer;
  236.     External;
  237.  
  238. FUNCTION SendAmigaGuideCmdA(cl : AmigaGuideContext; cmd : String; TagList : Address) : Integer;
  239.     External;
  240.  
  241. FUNCTION SetAmigaGuideAttrsA(cl : AmigaGuideContext; TagList : Address) : Integer;
  242.     External;
  243.  
  244. FUNCTION GetAmigaGuideAttr(T : Tag;cl : AmigaGuideContext; Storage : Address) : Integer;
  245.     External;
  246.  
  247. FUNCTION LoadXRef(l : Address; Name : String) : Integer;
  248.     External;
  249.  
  250. PROCEDURE ExpungeXRef;
  251.     External;
  252.  
  253. FUNCTION AddAmigaGuideHostA(h : HookPtr; name : String; TagList : Address) : Address;
  254.     External;
  255.  
  256. FUNCTION RemoveAmigaGuideHostA(hh : Address; TagList : Address ) : Integer;
  257.     External;
  258.  
  259. FUNCTION GetAmigaGuideString( ID : Integer ) : String;
  260.     External;
  261.  
  262.  
  263.  
  264.  
  265.